package com.chenu.gamscriptman.domain.noindb;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;
import java.util.Objects;

/**
 * @author flyan
 * date 2019-12-26
 * @function LIST服务消息参数，因为其有点复杂，故封装此数据类，便于gson解析
 */
@Data
@Accessors(chain = true)
public class ListMsgParameter<T> {

    /* 如果需要分页，那么用户请求会给出分页参数 */
    private PageBean<T> pageBean;

    /* 查询条件 */
    private T queryBean;

    /* 扩展Int字段 */
    private Integer ex_int;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        ListMsgParameter<?> parameter = (ListMsgParameter<?>) o;

        boolean pageBeanOk = false;
        if(this.pageBean != null && parameter.getPageBean() != null){
            if(this.pageBean.getCurrent() == parameter.getPageBean().getCurrent() &&
                    this.pageBean.getSize() == parameter.getPageBean().getSize() &&
                    this.pageBean.getDynamicHopeSize() == parameter.getPageBean().getDynamicHopeSize()){
                pageBeanOk = true;
            }
        }

        return Objects.equals(queryBean, parameter.queryBean) &&
                Objects.equals(ex_int, parameter.ex_int) &&
                pageBeanOk;
    }

    @Override
    public int hashCode() {
        return Objects.hash(pageBean, queryBean, ex_int);
    }
}
